<%--
  Created by IntelliJ IDEA.
  User: 11917
  Date: 2022/5/30
  Time: 09:18
  To change this template use File | Settings | File Templates.
--%>
<meta name="referrer" content="no-referrer"/>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>$Title$</title>
    <link rel="stylesheet" href="../static/layui/css/layui.css" media="all">
</head>
<script src="../static/layui/layui.js"></script>
<body>
<%--添加表单--%>
<form class="layui-form" action="" id="addForm" style="display: none">
    <div class="layui-form-item">
        <label class="layui-form-label">部门名称</label>
        <div class="layui-input-block">
            <input type="text" name="deptName" required lay-verify="required" placeholder="请输入部门名称" autocomplete="off"
                   class="layui-input">
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">显示顺序</label>
        <div class="layui-input-block">
            <input type="text" name="orderNum" required  lay-verify="required" placeholder="请输入显示顺序" autocomplete="off" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">状态</label>
        <div class="layui-input-block">
            <input type="radio" name="status" value="1" title="有效">
            <input type="radio" name="status" value="0" title="无效">
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">删除标志</label>
        <div class="layui-input-block">
            <input type="text" name="delFlag" required  lay-verify="required" placeholder="请选择删除标志" autocomplete="off" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">创建人</label>
        <div class="layui-input-block">
            <input type="text" name="createBy" required  lay-verify="required" placeholder="请输入创建人" autocomplete="off" class="layui-input">
        </div>
    </div>

    <div class="layui-form-item">
        <div class="layui-input-block">
            <button class="layui-btn" lay-submit lay-filter="addForm" id="saveAdd">保存</button>
            <button type="reset" class="layui-btn layui-btn-primary">重置</button>
        </div>
    </div>
</form>

<%--修改表单--%>
<form class="layui-form" action="" id="updateUserForm" style="display: none" lay-filter="updateUserFormFilter">

    <input type="hidden" name="deptId"/>
        <div class="layui-form-item">
            <label class="layui-form-label">部门名称</label>
            <div class="layui-input-block">
                <input type="text" name="deptName" required lay-verify="required" placeholder="请输入部门名称" autocomplete="off"
                       class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">显示顺序</label>
            <div class="layui-input-block">
                <input type="text" name="orderNum" required  lay-verify="required" placeholder="请输入显示顺序" autocomplete="off" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">状态</label>
            <div class="layui-input-block">
                <input type="radio" name="status" value="1" title="有效">
                <input type="radio" name="status" value="0" title="无效">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">删除标志</label>
            <div class="layui-input-block">
                <input type="text" name="delFlag" required  lay-verify="required" placeholder="请选择删除标志" autocomplete="off" class="layui-input">
            </div>
        </div>

        <div class="layui-form-item">
            <label class="layui-form-label">修改人</label>
            <div class="layui-input-block">
                <input type="text" name="updateBy" required  lay-verify="required" placeholder="请输入修改人" autocomplete="off" class="layui-input">
            </div>
        </div>

        <div class="layui-form-item">
            <div class="layui-input-block">
                <button class="layui-btn" lay-submit lay-filter="updateUserForm">保存</button>
                <button type="reset" class="layui-btn layui-btn-primary">重置</button>
            </div>
        </div>
</form>

<%--头部工具栏---批量操作的--%>
<script type="text/html" id="mytoolbar">
    <div class="layui-btn layui-btn-sm" lay-event="addDept">添加</div>
    <div class="layui-btn layui-btn-danger layui-btn-sm" lay-event="deleteBatch">删除</div>
</script>

<%--行内工具栏--操作一行的--%>
<script type="text/html" id="barDemo">
    <%--<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a>--%>
    <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>


<table id="demo" lay-filter="test"></table>
<script>
    <%--layui.use 是用来加载使用layui的内置模块，用到form的话，就在里面加'form' --%>
    layui.use(['table', 'form', 'jquery'], function () {
        var table = layui.table;
        var form = layui.form;
        var $ = layui.jquery
        table.render({
            elem: '#demo'
            , height: 600
            , url: '${pageContext.request.contextPath}/dept/findAllDept.do'//数据接口
            //, autoSort: false//禁用前端的自动排序，开启后端的服务器排序，根据客户需求
            , toolbar: '#mytoolbar'
            , cols: [[    //表头
                {type: 'checkbox', fixed: 'left'}
                , {field: 'deptId', title: '部门id', width: 120, sort: true, fixed: 'left'}
                , {field: 'deptName', title: '部门名称', width: 100}
                , {field: 'orderNum', title: '显示顺序', width: 100}
                , {field: 'status', title: '状态' ,templet: function(d){
                        return d.status==1?'<span class="layui-badge layui-bg-yellow">正常</span>':'<span class="layui-badge layui-bg-gray">停用</span>'
                    }}
                , {field: 'delFlag', title: '删除标志', width: 180}
                , {field: 'createBy', title: '创建人', width: 100}
                , {field: 'createTime', title: '创建时间', width: 100}
                , {field: 'updateBy', title: '修改人', width: 100}
                , {field: 'updateTime', title: '修改时间', width: 180}
                , {fixed: 'right', title: '操作', width: 180, align: 'center', toolbar: '#barDemo'}
            ]]
        });
        //触发排序事件
        table.on('sort(test)', function (obj) { //注：sort 是工具条事件名，test 是 table 原始容器的属性 lay-filter="对应的值"
            console.log(obj.field); //当前排序的字段名
            console.log(obj.type); //当前排序类型：desc（降序）、asc（升序）、null（空对象，默认排序）
            console.log(this); //当前排序的 th 对象

            //尽管我们的 table 自带排序功能，但并没有请求服务端。
            //有些时候，你可能需要根据当前排序的字段，重新向服务端发送请求，从而实现服务端排序，如：
            table.reload('demo', {
                initSort: obj //记录初始排序，如果不设的话，将无法标记表头的排序状态。
                , where: { //请求参数（注意：这里面的参数可任意定义，并非下面固定的格式）
                    field: obj.field //排序字段
                    , order: obj.type //排序方式
                }
            });

            // layer.msg('服务端排序。order by '+ obj.field + ' ' + obj.type);
        })

        //监听头工具栏事件
        table.on('toolbar(test)', function (obj) {
            var checkStatus = table.checkStatus(obj.config.id)
                , data = checkStatus.data; //获取选中的数据
            switch (obj.event) {
                case 'addDept':
                    layer.open({
                        title: "添加用户",
                        type: 1,
                        content: $('#addForm'), //这里content是一个DOM，注意：最好该元素要存放在body最外层，否则可能被其它的相对元素所影响
                        area: ['500px', '300px']
                    });

                    //弹出对话框，添加用户的form表单
                    //监听form提交事件
                    form.on('submit(addForm)', function (data) {
                        //ajax方式提交表单数据，将数据保存至数据库中。
                        $.ajax({
                            url: '${pageContext.request.contextPath}/dept/saveDept.do',
                            type: "post",
                            dataType: "json",
                            data: data.field,
                            success: function (ret) {
                                if (ret.code == 0) {
                                    layer.closeAll();//关闭对话框
                                    table.reload('demo', {
                                        /*page: {
                                          curr: 1 //重新从第 1 页开始
                                        }*/
                                    });
                                }
                                layer.msg(ret.msg);
                            }
                        });
                        table.reload('demo', {
                            /*page: {
                              curr: 1 //重新从第 1 页开始
                            }*/
                        });
                        //清空表单数据
                        $("#addForm")[0].reset();
                        layui.form.render();

                        return false; //阻止表单跳转。如果需要表单跳转，去掉这段即可。
                    });


                    break;
                case 'update':
                    if (data.length === 0) {
                        layer.msg('请选择一行');
                    } else if (data.length > 1) {
                        layer.msg('只能同时编辑一个');
                    } else {
                        layer.alert('编辑 [id]：' + checkStatus.data[0].id);
                    }
                    break;
                case 'deleteBatch':
                    if (data.length === 0) {
                        layer.msg('请选择一行');
                    } else {
                        /*layer.msg('删除');*/
                        //定义一个数组，封装所有的id
                        var ids = [];
                        //循环所有选中的行
                        for (let i = 0; i < data.length; i++) {
                            ids[i] = data[i].deptId;
                        }
                        console.log(ids);
                        layer.confirm('真的删除行么', function (index) {
                            //去后台批量删除数据
                            $.ajax({
                                url: '${pageContext.request.contextPath}/dept/deleteDeptById.do',
                                type: "POST",
                                dataType: "JSON",
                                data: {deptId: ids.join(",")},
                                success: function (data) {
                                    if (data.code == 0) {
                                        //关闭对话框
                                        layer.closeAll(); //疯狂模式，关闭所有层
                                        //刷新表格数据
                                        table.reload('demo');
                                    }
                                    layer.msg(data.msg);
                                }
                            });
                        });
                    }

                    break;
            }
            ;
        });

        //监听当前行工具事件
        table.on('tool(test)', function (obj) { //注：tool 是工具条事件名，test 是 table 原始容器的属性 lay-filter="对应的值"
            var data = obj.data //获得当前行数据
            console.log(data)
                , layEvent = obj.event; //获得 lay-event 对应的值
            if (layEvent === 'detail') {
                layer.msg('查看操作');
            } else if (layEvent === 'del') {
                layer.confirm('真的删除行么', function (index) {
                    //删除数据库中
                    $.ajax({
                        url: '${pageContext.request.contextPath}/dept/deleteDeptById.do',
                        type: "POST",
                        dataType: "JSON",
                        data: {deptId: data.deptId},
                        success: function (data) {
                            if (data.code == 0) {
                                //关闭对话框
                                layer.closeAll(); //疯狂模式，关闭所有层
                                //刷新表格数据
                                table.reload('demo');

                            }
                            layer.msg(data.msg);
                        }

                    });
                });
            } else if (layEvent === 'edit') {
                /*layer.msg('编辑操作');*/
                layer.open({
                    title: "修改用户",
                    type: 1,
                    content: $('#updateUserForm'), //这里content是一个DOM，注意：最好该元素要存放在body最外层，否则可能被其它的相对元素所影响
                    area: ['500px', '300px']
                });
                //表单数据的填充
                form.val('updateUserFormFilter', {
                    "deptId": obj.data.deptId,
                    "deptName": obj.data.deptName,
                    "orderNum": obj.data.orderNum, // "name": "value"
                    "status": obj.data.status,
                    "delFlag": obj.data.delFlag,
                });
                form.on('submit(updateUserForm)', function (data) {
                    //ajax方式提交表单数据，将数据保存至数据库中。
                    $.ajax({
                        url: '${pageContext.request.contextPath}/dept/updateDept.do',
                        type: "post",
                        dataType: "json",
                        data: data.field,
                        success: function (ret) {
                            if (ret.code == 0) {
                                layer.closeAll();//关闭对话框
                                table.reload('demo', {
                                    /*page: {
                                      curr: 1 //重新从第 1 页开始
                                    }*/
                                });
                            }
                            layer.msg(ret.msg);
                        }
                    })
                    table.reload('demo', {
                        /*page: {
                          curr: 1 //重新从第 1 页开始
                        }*/
                    });
                    return false; //阻止表单跳转。如果需要表单跳转，去掉这段即可。
                });
            }
        });

    });

</script>
</body>
</html>
